package ar.edu.ufasta.presupuestos.logica.entidades.remito;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import ar.edu.ufasta.presupuestos.logica.entidades.EntidadBase;
import ar.edu.ufasta.presupuestos.servicios.mail.MailTransportService;
import ar.edu.ufasta.presupuestos.servicios.persistencia.PersistenceFacade;

/**
 * @author Carlos
 *
 */
public abstract class RemitoCompra extends EntidadBase{

	// Atributos de la clase
	private Date fechaEmision;
	private Integer estado;
	private List<DetalleRemito> detalles;
	
	public RemitoCompra() {
		this.detalles = new ArrayList<DetalleRemito>();
	}
	
	public List<DetalleRemito> getDetalles() {
		return detalles;
	}

	public void setDetalles(List<DetalleRemito> detalles) {
		this.detalles = detalles;
	}
	
	public void addDetalle(DetalleRemito detalleRemito){
		this.detalles.add(detalleRemito);
		detalleRemito.setRemitoCompra(this);
	}

	public Date getFechaEmision() {
		return fechaEmision;
	}

	public void setFechaEmision(Date fechaEmision) {
		this.fechaEmision = fechaEmision;
	}

	public Integer getEstado() {
		return estado;
	}

	public void setEstado(Integer estado) {
		this.estado = estado;
	}

		
	public Boolean finalizar(){
		List<DetalleRemito> listado = this.detalles;
		for (DetalleRemito item: listado) {
			item.getPresupuesto().completarDetallePendiente(item.getArticulo(), item.getCantidad());
		}
		this.estado = 1;
		return PersistenceFacade.getInstance().put(this);
	}
	
	public abstract String getOrigen();
	
	public abstract String getName();

	
	
	public void sendRemitoMail(){
		MailTransportService.getInstance().sendMail(this);
	}
	
	public String getEstadoName(){
		if ( this.estado == 1 ){
			return "FINALIZADO";
		}
		return "PENDIENTE";
	}
}
